package ua.yandex.collections;

public interface MyList {

    //добавляет элемент в конец коллекции
    void add(Object e);

    //добавляет элемент в указанное место коллекции, 
    //и бросает исключение если индекс выходит за рамки
    void add(int index, Object e);

    //добавляет массив элементов в конец коллекции
    void addAll(Object[] c);

    //добавляет массив элементов в указанное место коллекции,
    //и бросает исключение если индекс выходит за рамки
    void addAll(int index, Object[] c);

    //возвращает элемент по индексу, и бросает 
    //исключение если индекс выходит за рамки

    Object get(int index);

    //удаляет элемент по индексу, и бросает 
    //исключение если индекс выходит за рамки
    Object remove(int index);

    //изменяет значение элемента, и бросает
    //исключение если индекс выходит за рамки
    void set(int index, Object e);

    //поиск индекса по значению элемента 
    //(выводит индекс первого найденного, или -1 в случае его отсутствия)
    int indexOf(Object o);

    //размер коллекции
    int size();

    //удаляет содержимое коллекции
    void clear();

    //возвращает true если в коллекции нет элементов
    boolean isEmpty();

    //преобразует коллекцию в массив объектов
    Object[] toArray();
    
    //возвращает строку, в которой через запятую 
    //выводятся значения элементов в коллекции
    @Override
    String toString();
}
